package cn.wolfcode.luowowo.redis.redisService;

import cn.wolfcode.luowowo.domain.UserInfo;
import cn.wolfcode.luowowo.vo.FavorStrategyVO;
import cn.wolfcode.luowowo.vo.StrategyStatisVO;

import java.util.ArrayList;
import java.util.List;

/**
 * 攻略统计对象在redis中的操作接口
 */
public interface IStrategyStatisVoService {


    /**
     * 攻略点击数 加1
     *
     * @param id 攻略的id
     * @param i  加1
     */

    /**
     * 攻略评论数 +1
     *
     * @param strategyId
     * @param i
     */
    void replynumIncrease(String strategyId, int i);

    void viewnumIncrease(String strategyId, int i);

    /**
     * 根据攻略id 获取缓存中的攻略统计数据vo对象
     *
     * @param id
     * @return
     */
    StrategyStatisVO getStrategyStatisVo(String strategyId);

    /**
     * 根据攻略id 存入vo對象
     *
     * @param vo
     */
    void setStrategyStatisVo(StrategyStatisVO vo);

    /**
     * 攻略收藏或取消收藏
     *
     * @param sid
     * @param id
     * @return true:收藏  false:取消收藏
     */
    boolean favor(String strategyId, String userInfoId);

    /**
     * 对攻略的 点赞操作  (顶攻略)
     * @param strategyId
     * @param userInfoId
     *
     * true:点赞成功  false:当天已经点过赞 即点赞失败
     */
    boolean thumbup(String strategyId, String userInfoId);

    /**
     * 根据攻略id 检查vo对象是否存在
     * @param id
     * @return true:存在  false:不存在
     */
    boolean isVoExsits(String strategyId);

    /**
     * 根据pattern获取所有的vo对象
     * @param pattern
     * @return
     */
    List<StrategyStatisVO> listStrategyVoByPattern(String pattern);

    /**
     * 根据vo中的攻略id  更新vo到mongodb数据库对应的攻略
     * @param vo
     */
    void updateStrategyVo(StrategyStatisVO vo);

    /**
     * 获取redis中 所有用户的收藏攻略对象
     * @param pattern
     * @return
     */
    ArrayList<FavorStrategyVO> listStrategFavorByPattern(String pattern);


    /**
     * 查询在缓存中的  所有用户收藏的攻略id集合
     * @param pattern
     */
}
